package main

import "fmt"

func main() {
	s := make([]int, 5, 10)
	fmt.Println(len(s), cap(s))
	//append传入的s是值类型，因此是对s数据的完整复制，但特点是会共享切片的底层数组
	_ = append(s, 5, 6, 7, 8, 9)
	fmt.Println(len(s), cap(s))
	//此时切片s的底层数组虽然被append函数进行了修改，但是切片本身的len没有变化
	//因此方位超过len的index会直接报错
	//fmt.Println(s[8])
	//此操作会在切片s的底层数组5索引出赋值10
	s1 := append(s, 10)
	//此时的修改会印象s，s1两个切片，因为当前两个切片公用一个底层数组
	s1[2] = 2
	fmt.Println(len(s), cap(s), s)
	fmt.Println(len(s1), cap(s1), s1)
	//5 10 [0 0 2 0 0]
	//6 10 [0 0 2 0 0 10]
}
